This invention relates to a print data generator for generating bit-mapped image data in a device such as a page printer.
Such a device generally has an image memory for storing bit-mapped image data, and a modifying data memory, typically a font memory, formed for example of a RAM or a ROM, for storing the bit maps of characters and symbols. To print a character or symbol, its bit map is read from the font memory a word at a time, similar words of image data are read from the image memory, and an operation is performed on the font words and corresponding image words to modify the image words. The modified image words are then written back to the same memory location in the image memory from which the particular image words have been read. The modified image words are then supplied to a print engine, not shown, for printing. The image data may already contain font data developed therein, or data representing graphics, rule marks, background pictures, etc. The operation for the modification of the image data may be a logical sum (OR) operation, a logical product (AND) operation, or an exclusive logical sum (ex-OR) operation on the data input at the X input terminal and the Y input terminal, or selection of one of the data at the X input terminal or the data at the Y input terminal. When a "transparent printing," in which neither of the black dots in the image data and the black dots in the font data are suppressed, is to be performed, the logical sum operation is performed. When a "non-transparent printing," in which the image data is suppressed in the area where the font data is superimposed, and the bits of the font data become the bits of the image data, is to be performed, the selection of the bits of the font data is performed.
The process is complicated by the fact that the font words may be offset from the image words by a certain number of bits. Before the operation is performed, the font words must then be shifted to align them with the image words. A by-product of this shift is that in each line of image data, the initial bits of the first image word and the final bits of the last image word are not covered by font data. The operation must therefore be disabled on the uncovered bits to avoid modifying image data outside the width of the character or symbol. Control words comprising enable bits and disable bits are used for this purpose.
The data generation process is overseen by a controller such as a microprocessor which specifies the addresses of the image data and font data in their respective memories, and the bit offset between the font words and image words. The microprocessor may also shift the font data, perform the necessary modification of image words, and write the modified image words back to image memory. These tasks are time-consuming, however, and the controller has other tasks to perform as well, such as generating bit maps from mathematical descriptions and communicating with a host computer.
Specialized hardware has therefore been developed for generating print data. Such specialized hardware typically comprises a shift register for shifting the font words and a programmable arithmetic-logic unit for carrying out a specified operation on the font words and image words. By performing these tasks independently, such specialized hardware can significantly speed up the generation of print data while leaving the controller free to perform other tasks.
However, it has still been necessary for the controller to control the specialized hardware fairly closely. A particular problem is that the controller has to identify the first, intermediate, and last image words in each line and set corresponding mask control data in a register in the specialized hardware. Control of the specialized hardware thus still imposes a significant load on the controller and slows down the printing process, particularly on pages with large numbers of characters or symbols.